#ifndef XMLINFOOBJET_HPP
#define XMLINFOOBJET_HPP

#include "XmlInfoNom.hpp"

#include <QtCore/QDateTime>

/**
 * Type énuméré listant le type d'objet.
 */
enum EnumTypeObjet
  {
    Ressource, /**< Objet humain, utilisé comme matière première
		    pour la création d'équipement, utilisable pour
		    augmenter la taille du tas d'ordures. */
    Equipement /**< Equipement pour un monstre. */
  };

/**
 * Classe représentant les objets de l'inventaire. Ces derniers
 * peuvent être soit une "ressource" ou un "équipement". Certains
 * équipement peuvent être en cours de fabrication.
 *
 * @author Johan "Solo" Luisier
 * @date Octobre 2011
 */
class XmlInfoObjet : public XmlInfoNom
{
public:
  XmlInfoObjet( const QString& nomFichier, const unsigned& id,
		const QString& nom, const unsigned& quantite,
		const EnumTypeObjet& typeObjet );
  XmlInfoObjet( const XmlInfoObjet& objet );
  ~XmlInfoObjet();
  XmlInfoObjet& operator=( const XmlInfoObjet& objet );
  const unsigned& quantite() const;
  const EnumTypeObjet& typeObjet() const;
  const QDateTime& dateFin() const;
  void setQuantite( const unsigned& quantite );
  void setTypeObjet( const EnumTypeObjet& typeObjet );
  void setDateFin( const QDateTime& dateFin );
protected:
  /**
   * Nombre d'objet de ce type dans l'inventaire.
   */
  unsigned Quantite;
  /**
   * Type de l'objet (càd ressource ou équipement).
   */
  EnumTypeObjet TypeObjet;
  /**
   * Date de fin de construction (si l'objet est en cours de
   * fabrication).
   */
  QDateTime DateFin;
};

#endif // XMLINFOOBJET_HPP
